package com.incito.crawl.common.utils;

import org.apache.commons.lang3.StringUtils;

/**
 * Created with IntelliJ IDEA.
 * User: liu
 * Date: 14-5-23
 * Time: 下午5:51
 * To change this template use File | Settings | File Templates.
 */
public class UrlKit {

    /**
     * 获取url里面的参数，同时对最后一个‘#’进行过滤
     *
     * @param parameter 待取的参数名如 id
     * @param url       链接地址
     * @return
     */
    public static String getParameter(String parameter, String url) {

        String value = getUrlParameter(parameter, url, true);
        if (StringUtils.isNotBlank(value)) {
            value = value.replaceAll("#$", "");
        }
        return value;

    }

    /**
     * 获取url里面的参数，同时不对最后一个‘#’进行过滤
     * getUrlParameter("id", "http://item.taobao.com/item.htm?nid=1&id=21958267666&c=tuan", matchName = true)
     * 将获得  21958267666
     * getUrlParameter("id", "http://item.taobao.com/item.htm?nid=1&id=21958267666&c=tuan", matchName = false)
     * 将获得  1
     *
     * @param parameter 待取的参数名如 id
     * @param url       链接地址
     * @param matchName 是否对参数名进行全名匹配，如取id时是否对nid进行取值，适合用于先取到谁就要谁的情况，默认为true
     * @return
     */
    public static String getUrlParameter(String parameter, String url, Boolean matchName) {

        String[] keyValues = StringUtils.split(url, '&');
        if (keyValues == null) {
            return null;
        }

        for (int i = 0; i < keyValues.length; i++) {
            String str = keyValues[i];
            if (str.contains("?")) {
                str = str.substring(str.indexOf("?") + 1);
            }
            if (str.contains("=")) {
                Boolean get = false;
                String pa = str.substring(0, str.indexOf("=")).trim();

                if (matchName && pa.equals(parameter)) {
                    get = true;
                } else if (!matchName && pa.contains(parameter))
                    get = true;

                if (get) {
                    str = str.substring(str.indexOf("=") + 1);
                    if (str != "") {
                        return str;
                    }
                }
            }
        }
        return null;
    }


}
